using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._TopographicProductionTools._DataManagement._Topology
{
    /// <summary>
    /// <para>Import Topology</para>
    /// <para>Creates a geodatabase topology from a definition .xml file generated by the Export Topology tool in the Topographic Production toolbox.</para>
    /// <para>根据地形制作工具箱中的导出拓扑工具生成的定义.xml文件创建地理数据库拓扑。</para>
    /// </summary>    
    [DisplayName("Import Topology")]
    public class ImportTopology : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public ImportTopology()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_in_feature_dataset">
        /// <para>Input Feature Dataset</para>
        /// <para>The feature dataset in which the topology will be created. The feature dataset must contain the feature classes listed in the Input Topology Definition File.</para>
        /// <para>将在其中创建拓扑的要素数据集。要素数据集必须包含输入拓扑定义文件中列出的要素类。</para>
        /// </param>
        /// <param name="_topology_definition_file">
        /// <para>Input Topology Definition File</para>
        /// <para>The .xml file that contains the topology definition.</para>
        /// <para>包含拓扑定义的.xml文件。</para>
        /// </param>
        public ImportTopology(object _in_feature_dataset, object _topology_definition_file)
        {
            this._in_feature_dataset = _in_feature_dataset;
            this._topology_definition_file = _topology_definition_file;
        }
        public override string ToolboxName => "Topographic Production Tools";

        public override string ToolName => "Import Topology";

        public override string CallName => "topographic.ImportTopology";

        public override List<string> AcceptEnvironments => [];

        public override object[] ParameterInfo => [_in_feature_dataset, _topology_definition_file, _out_topology];

        /// <summary>
        /// <para>Input Feature Dataset</para>
        /// <para>The feature dataset in which the topology will be created. The feature dataset must contain the feature classes listed in the Input Topology Definition File.</para>
        /// <para>将在其中创建拓扑的要素数据集。要素数据集必须包含输入拓扑定义文件中列出的要素类。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Feature Dataset")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _in_feature_dataset { get; set; }


        /// <summary>
        /// <para>Input Topology Definition File</para>
        /// <para>The .xml file that contains the topology definition.</para>
        /// <para>包含拓扑定义的.xml文件。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Topology Definition File")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _topology_definition_file { get; set; }


        /// <summary>
        /// <para>Output Topology</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output Topology")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _out_topology { get; set; }


        public ImportTopology SetEnv()
        {
            base.SetEnv();
            return this;
        }

    }

}